package com.mfin.bom.factory.interfaces;

import java.io.Serializable;
import java.util.List;

import com.mfin.bom.interfaces.IDocCharge;
import com.mfin.bom.interfaces.IFinance;
import com.mfin.bom.interfaces.ILoanMaster;
import com.mfin.bom.interfaces.ILoanPreference;
import com.mfin.bom.interfaces.IVehicle;
import com.mfin.enumeration.LoanType;
import com.mfin.vo.finance.FinanceVO;
import com.mfin.vo.interfaces.IIdentifiableObject;
import com.mfin.vo.loan.LoanMasterVO;

public interface ILoanMasterFactory extends IFactory {

	public ILoanMaster getLoanMaster(Serializable loanType);

	public List<ILoanMaster> getAllLoanTypes();

	public ILoanPreference getFinanceLoanPreference(FinanceVO financeVO,
			LoanType loanType);

	ILoanPreference getFinanceLoanPreference(
			IIdentifiableObject identifiableObject);

	public IVehicle createVehicle();

	public ILoanMaster createLoanMaster(LoanType loanType);

	public ILoanPreference createLoanPreference(IFinance bomFinance,
			ILoanMaster bomLoanMaster);

	public IDocCharge createDocCharge();

	public void deleteDocChargeList(List<IDocCharge> docCharges);

}
